package nimbus.mvc
{
	import nimbus.binding.utils.BindingUtils;
	
	import mx.utils.ObjectProxy;
	
	[Bindable("propertyChange")]
	
	public dynamic class BindableState extends ObjectProxy
	{
		
		public function bindProperty(site:Object, prop:String, chain:Object, useWeakReference:Boolean = false):void
		{
			BindingUtils.bindProperty(site, prop, this, chain, useWeakReference);
		}
		
		public function bindSetter(site:Object, setter:Function, chain:Object, useWeakReference:Boolean = false):void
		{
			BindingUtils.bindSetter(site, setter, this, chain, useWeakReference);
		}
		
		public function bindTwoWay(endPoint1:Object, prop1:String, endPoint2:Object, prop2:String, useWeakReference:Boolean = false):void
		{
			BindingUtils.bindTwoWay(endPoint1, prop1, endPoint2, prop2, useWeakReference);
		}
		
		public function releaseBindings(target:Object):void
		{
			BindingUtils.releaseBindings(target);
		}
		
	}
}
